#ifndef ENGINE_STRING_H
#define ENGINE_STRING_H
#include <apoget.h>

class POGET_API String
{
	static uint const DEFAULT_STRING_LENGTH = 64;
	size_t	stringLength;
	size_t	stringDataLength;
	char _stringData[DEFAULT_STRING_LENGTH];
	char* stringData;
public:
	String();
	String(const char* str);
	~String();

	String& operator=(const String& str);
	String& operator=(const char* str);
	String& operator+=(const String& str);
	String& operator+=(const char* str);

	char* get();
	void set(const char* str);

	void init();

	void toLowerCase();
	void toUpperCase();

	void trim(bool left = true, bool right = true);
	void trimLeft() { return trim(true, false); };
	void trimRight() { return trim(false, true); };
	void append(const char* str);
	bool find(const char* str);
	void replace(const char* str, const char* newStr);
	char at(size_t pos);

	size_t length();
	size_t size();
	void clear();
	void erase(size_t length);
};


#endif